package ar.edu.utn.frba.tacs.warnes.pedido;

import java.util.List;

import ar.edu.utn.frba.tacs.warnes.Reserva;
import ar.edu.utn.frba.tacs.warnes.excepciones.YaEstaVendidaException;
import ar.edu.utn.frba.tacs.warnes.pieza.Pieza;
import ar.edu.utn.frba.tacs.warnes.utils.ContenedorWarnes;

public class PedidoEnCursoStrategy extends PedidoStrategy {

	private Reserva reserva;
	
	public Reserva getReserva() {
		return this.reserva;
	}

	public void setReserva(Reserva reserva) {
		this.reserva = reserva;
	}

	/**
	 * Instancia del Strategy que crea una nueva reserva y,
	 * si puede, reserva las piezas.
	 * @param piezas
	 * @throws YaEstaVendidaException
	 */
	public PedidoEnCursoStrategy(List<Pieza> piezas) {
		this.setReserva(ContenedorWarnes.getInstance().nuevaReserva());
		for (Pieza pieza : piezas) {
			this.getReserva().reservarPieza(pieza);
		}
	}

	public PedidoEnCursoStrategy() {
		this.setReserva(ContenedorWarnes.getInstance().nuevaReserva());
	}

	@Override
	public List<Pieza> getPiezas() {
		return this.getReserva().getPiezasReservadas();
	}

	/**
	 * Agrega una pieza al pedido reservado
	 */
	@Override
	public void addPieza(Pieza pieza) {
		 this.getReserva().getPiezasReservadas().add(pieza);
		 pieza.reservate(this.getReserva());
	}

	@Override
	public boolean estaEnCurso(){
		return true;	
	}

	public String toString(){
		return "En Curso";
	}
}
